Newtype パターン
1 つのフィールドを持つタプル構造体を使って、型の不透明なラッパを作成する
Rust Design Patterns
の 1 つ
OOP
における
Value Object
のようなものと解釈
radish-miyazaki.icon
これにより、型のエイリアスではなく新しい型が作成される
ただし、ランタイム上の追加の
オーバーヘッド
は発生しない(
ゼロコスト抽象化
)
サンプルコード
code:rs
#
derive(Debug, Clone, Copy)
pub struct BookId(uuid::Uuid)
impl BookId {
pub fn new() -> Self {
Self(uuid::Uuid::new_v4())
}
}
参考
https://rust-unofficial.github.io/patterns/patterns/behavioural/newtype.html
日本語訳:
https://qiita.com/Yappii_111/items/654717e6a6a980722189#newtype
https://nossie531.github.io/rust_memo/newtype.xhtml